/*
 * 标准交易
 * <p>名称（中文）：新交易下单接口<br />名称（英文，xx.war）：opr-hessian.war<br />简介：合单支付下单与标准收款内部下单接口合并<br />wiki文档地址：http://wiki.yeepay.com/pages/viewpage.action?pageId=122095805(4.新api分组相关接口规划)<br />预计项目上线时间：2020年6月9日<br />归属/拟申请的sp编码（可选）：opr<br />期望api分组编码、名称（可选）：trade(标准交易)<br />涉及的接口：申请下单、订单查询、申请退款、退款查询</p>
 *
 * OpenAPI spec version: 1.0
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package com.hyt.it.ogt.kq.service.bm.model.dto.pay;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.commons.lang3.ObjectUtils;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * RefundQueryQueryRefundResponseDTOResult
 */
public class RefundQueryQueryRefundResponseDTOResult implements Serializable{

  private static final long serialVersionUID = 1L;

  /**
   * 返回码
   */
  @JsonProperty("code")
  private String code = null;

  /**
   * 返回信息
   */
  @JsonProperty("message")
  private String message = null;

  /**
   * 发起方商编
   */
  @JsonProperty("parentMerchantNo")
  private String parentMerchantNo = null;

  /**
   * 商户编号
   */
  @JsonProperty("merchantNo")
  private String merchantNo = null;

  /**
   * 商户收款请求号
   */
  @JsonProperty("orderId")
  private String orderId = null;

  /**
   * 商户退款请求号
   */
  @JsonProperty("refundRequestId")
  private String refundRequestId = null;

  /**
   * 易宝收款订单号
   */
  @JsonProperty("uniqueOrderNo")
  private String uniqueOrderNo = null;

  /**
   * 易宝退款订单号
   */
  @JsonProperty("uniqueRefundNo")
  private String uniqueRefundNo = null;

  /**
   * 退款申请金额
   */
  @JsonProperty("refundAmount")
  private BigDecimal refundAmount = null;

  /**
   * 退回商户手续费
   */
  @JsonProperty("returnMerchantFee")
  private BigDecimal returnMerchantFee = null;

  /**
   * 退款状态
   */
  @JsonProperty("status")
  private String status = null;

  /**
   * 退款原因
   */
  @JsonProperty("description")
  private String description = null;

  /**
   * 退款受理时间
   */
  @JsonProperty("refundRequestDate")
  private String refundRequestDate = null;

  /**
   * 退款成功日期
   */
  @JsonProperty("refundSuccessDate")
  private String refundSuccessDate = null;

  /**
   * 退款失败原因
   */
  @JsonProperty("failReason")
  private String failReason = null;

  /**
   * 实际退款金额
   */
  @JsonProperty("realRefundAmount")
  private BigDecimal realRefundAmount = null;

  /**
   * 用户实退金额
   */
  @JsonProperty("cashRefundFee")
  private BigDecimal cashRefundFee = null;

  /**
   * 渠道侧优惠退回列表
   */
  @JsonProperty("bankPromotionInfoDTOList")
  private List<RefundQueryBankPromotionInfoDTOResult> bankPromotionInfoDTOList = null;

  /**
   * 易宝侧优惠退回列表
   */
  @JsonProperty("ypPromotionInfoDTOList")
  private List<RefundQueryYpPromotionRefundInfoDTOResult> ypPromotionInfoDTOList = null;

  public RefundQueryQueryRefundResponseDTOResult code(String code) {
    this.code = code;
    return this;
  }

   /**
   * 返回码
   * @return code
  **/

  public String getCode() {
    return code;
  }

  public void setCode(String code) {
    this.code = code;
  }

  public RefundQueryQueryRefundResponseDTOResult message(String message) {
    this.message = message;
    return this;
  }

   /**
   * 返回信息
   * @return message
  **/

  public String getMessage() {
    return message;
  }

  public void setMessage(String message) {
    this.message = message;
  }

  public RefundQueryQueryRefundResponseDTOResult parentMerchantNo(String parentMerchantNo) {
    this.parentMerchantNo = parentMerchantNo;
    return this;
  }

   /**
   * 发起方商编
   * @return parentMerchantNo
  **/

  public String getParentMerchantNo() {
    return parentMerchantNo;
  }

  public void setParentMerchantNo(String parentMerchantNo) {
    this.parentMerchantNo = parentMerchantNo;
  }

  public RefundQueryQueryRefundResponseDTOResult merchantNo(String merchantNo) {
    this.merchantNo = merchantNo;
    return this;
  }

   /**
   * 商户编号
   * @return merchantNo
  **/

  public String getMerchantNo() {
    return merchantNo;
  }

  public void setMerchantNo(String merchantNo) {
    this.merchantNo = merchantNo;
  }

  public RefundQueryQueryRefundResponseDTOResult orderId(String orderId) {
    this.orderId = orderId;
    return this;
  }

   /**
   * 商户收款请求号
   * @return orderId
  **/

  public String getOrderId() {
    return orderId;
  }

  public void setOrderId(String orderId) {
    this.orderId = orderId;
  }

  public RefundQueryQueryRefundResponseDTOResult refundRequestId(String refundRequestId) {
    this.refundRequestId = refundRequestId;
    return this;
  }

   /**
   * 商户退款请求号
   * @return refundRequestId
  **/

  public String getRefundRequestId() {
    return refundRequestId;
  }

  public void setRefundRequestId(String refundRequestId) {
    this.refundRequestId = refundRequestId;
  }

  public RefundQueryQueryRefundResponseDTOResult uniqueOrderNo(String uniqueOrderNo) {
    this.uniqueOrderNo = uniqueOrderNo;
    return this;
  }

   /**
   * 易宝收款订单号
   * @return uniqueOrderNo
  **/

  public String getUniqueOrderNo() {
    return uniqueOrderNo;
  }

  public void setUniqueOrderNo(String uniqueOrderNo) {
    this.uniqueOrderNo = uniqueOrderNo;
  }

  public RefundQueryQueryRefundResponseDTOResult uniqueRefundNo(String uniqueRefundNo) {
    this.uniqueRefundNo = uniqueRefundNo;
    return this;
  }

   /**
   * 易宝退款订单号
   * @return uniqueRefundNo
  **/

  public String getUniqueRefundNo() {
    return uniqueRefundNo;
  }

  public void setUniqueRefundNo(String uniqueRefundNo) {
    this.uniqueRefundNo = uniqueRefundNo;
  }

  public RefundQueryQueryRefundResponseDTOResult refundAmount(BigDecimal refundAmount) {
    this.refundAmount = refundAmount;
    return this;
  }

   /**
   * 退款申请金额
   * @return refundAmount
  **/

  public BigDecimal getRefundAmount() {
    return refundAmount;
  }

  public void setRefundAmount(BigDecimal refundAmount) {
    this.refundAmount = refundAmount;
  }

  public RefundQueryQueryRefundResponseDTOResult returnMerchantFee(BigDecimal returnMerchantFee) {
    this.returnMerchantFee = returnMerchantFee;
    return this;
  }

   /**
   * 退回商户手续费
   * @return returnMerchantFee
  **/

  public BigDecimal getReturnMerchantFee() {
    return returnMerchantFee;
  }

  public void setReturnMerchantFee(BigDecimal returnMerchantFee) {
    this.returnMerchantFee = returnMerchantFee;
  }

  public RefundQueryQueryRefundResponseDTOResult status(String status) {
    this.status = status;
    return this;
  }

   /**
   * 退款状态
   * @return status
  **/

  public String getStatus() {
    return status;
  }

  public void setStatus(String status) {
    this.status = status;
  }

  public RefundQueryQueryRefundResponseDTOResult description(String description) {
    this.description = description;
    return this;
  }

   /**
   * 退款原因
   * @return description
  **/

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public RefundQueryQueryRefundResponseDTOResult refundRequestDate(String refundRequestDate) {
    this.refundRequestDate = refundRequestDate;
    return this;
  }

   /**
   * 退款受理时间
   * @return refundRequestDate
  **/

  public String getRefundRequestDate() {
    return refundRequestDate;
  }

  public void setRefundRequestDate(String refundRequestDate) {
    this.refundRequestDate = refundRequestDate;
  }

  public RefundQueryQueryRefundResponseDTOResult refundSuccessDate(String refundSuccessDate) {
    this.refundSuccessDate = refundSuccessDate;
    return this;
  }

   /**
   * 退款成功日期
   * @return refundSuccessDate
  **/

  public String getRefundSuccessDate() {
    return refundSuccessDate;
  }

  public void setRefundSuccessDate(String refundSuccessDate) {
    this.refundSuccessDate = refundSuccessDate;
  }

  public RefundQueryQueryRefundResponseDTOResult failReason(String failReason) {
    this.failReason = failReason;
    return this;
  }

   /**
   * 退款失败原因
   * @return failReason
  **/

  public String getFailReason() {
    return failReason;
  }

  public void setFailReason(String failReason) {
    this.failReason = failReason;
  }

  public RefundQueryQueryRefundResponseDTOResult realRefundAmount(BigDecimal realRefundAmount) {
    this.realRefundAmount = realRefundAmount;
    return this;
  }

   /**
   * 实际退款金额
   * @return realRefundAmount
  **/

  public BigDecimal getRealRefundAmount() {
    return realRefundAmount;
  }

  public void setRealRefundAmount(BigDecimal realRefundAmount) {
    this.realRefundAmount = realRefundAmount;
  }

  public RefundQueryQueryRefundResponseDTOResult cashRefundFee(BigDecimal cashRefundFee) {
    this.cashRefundFee = cashRefundFee;
    return this;
  }

   /**
   * 用户实退金额
   * @return cashRefundFee
  **/

  public BigDecimal getCashRefundFee() {
    return cashRefundFee;
  }

  public void setCashRefundFee(BigDecimal cashRefundFee) {
    this.cashRefundFee = cashRefundFee;
  }

  public RefundQueryQueryRefundResponseDTOResult bankPromotionInfoDTOList(List<RefundQueryBankPromotionInfoDTOResult> bankPromotionInfoDTOList) {
    this.bankPromotionInfoDTOList = bankPromotionInfoDTOList;
    return this;
  }

  public RefundQueryQueryRefundResponseDTOResult addBankPromotionInfoDTOListItem(RefundQueryBankPromotionInfoDTOResult bankPromotionInfoDTOListItem) {
    if (this.bankPromotionInfoDTOList == null) {
      this.bankPromotionInfoDTOList = new ArrayList<>();
    }
    this.bankPromotionInfoDTOList.add(bankPromotionInfoDTOListItem);
    return this;
  }

   /**
   * 渠道侧优惠退回列表
   * @return bankPromotionInfoDTOList
  **/

  public List<RefundQueryBankPromotionInfoDTOResult> getBankPromotionInfoDTOList() {
    return bankPromotionInfoDTOList;
  }

  public void setBankPromotionInfoDTOList(List<RefundQueryBankPromotionInfoDTOResult> bankPromotionInfoDTOList) {
    this.bankPromotionInfoDTOList = bankPromotionInfoDTOList;
  }

  public RefundQueryQueryRefundResponseDTOResult ypPromotionInfoDTOList(List<RefundQueryYpPromotionRefundInfoDTOResult> ypPromotionInfoDTOList) {
    this.ypPromotionInfoDTOList = ypPromotionInfoDTOList;
    return this;
  }

  public RefundQueryQueryRefundResponseDTOResult addYpPromotionInfoDTOListItem(RefundQueryYpPromotionRefundInfoDTOResult ypPromotionInfoDTOListItem) {
    if (this.ypPromotionInfoDTOList == null) {
      this.ypPromotionInfoDTOList = new ArrayList<>();
    }
    this.ypPromotionInfoDTOList.add(ypPromotionInfoDTOListItem);
    return this;
  }

   /**
   * 易宝侧优惠退回列表
   * @return ypPromotionInfoDTOList
  **/

  public List<RefundQueryYpPromotionRefundInfoDTOResult> getYpPromotionInfoDTOList() {
    return ypPromotionInfoDTOList;
  }

  public void setYpPromotionInfoDTOList(List<RefundQueryYpPromotionRefundInfoDTOResult> ypPromotionInfoDTOList) {
    this.ypPromotionInfoDTOList = ypPromotionInfoDTOList;
  }


  @Override
  public boolean equals(Object o) {
  if (this == o) {
    return true;
  }
  if (o == null || getClass() != o.getClass()) {
    return false;
  }
    RefundQueryQueryRefundResponseDTOResult refundQueryQueryRefundResponseDTOResult = (RefundQueryQueryRefundResponseDTOResult) o;
    return ObjectUtils.equals(this.code, refundQueryQueryRefundResponseDTOResult.code) &&
    ObjectUtils.equals(this.message, refundQueryQueryRefundResponseDTOResult.message) &&
    ObjectUtils.equals(this.parentMerchantNo, refundQueryQueryRefundResponseDTOResult.parentMerchantNo) &&
    ObjectUtils.equals(this.merchantNo, refundQueryQueryRefundResponseDTOResult.merchantNo) &&
    ObjectUtils.equals(this.orderId, refundQueryQueryRefundResponseDTOResult.orderId) &&
    ObjectUtils.equals(this.refundRequestId, refundQueryQueryRefundResponseDTOResult.refundRequestId) &&
    ObjectUtils.equals(this.uniqueOrderNo, refundQueryQueryRefundResponseDTOResult.uniqueOrderNo) &&
    ObjectUtils.equals(this.uniqueRefundNo, refundQueryQueryRefundResponseDTOResult.uniqueRefundNo) &&
    ObjectUtils.equals(this.refundAmount, refundQueryQueryRefundResponseDTOResult.refundAmount) &&
    ObjectUtils.equals(this.returnMerchantFee, refundQueryQueryRefundResponseDTOResult.returnMerchantFee) &&
    ObjectUtils.equals(this.status, refundQueryQueryRefundResponseDTOResult.status) &&
    ObjectUtils.equals(this.description, refundQueryQueryRefundResponseDTOResult.description) &&
    ObjectUtils.equals(this.refundRequestDate, refundQueryQueryRefundResponseDTOResult.refundRequestDate) &&
    ObjectUtils.equals(this.refundSuccessDate, refundQueryQueryRefundResponseDTOResult.refundSuccessDate) &&
    ObjectUtils.equals(this.failReason, refundQueryQueryRefundResponseDTOResult.failReason) &&
    ObjectUtils.equals(this.realRefundAmount, refundQueryQueryRefundResponseDTOResult.realRefundAmount) &&
    ObjectUtils.equals(this.cashRefundFee, refundQueryQueryRefundResponseDTOResult.cashRefundFee) &&
    ObjectUtils.equals(this.bankPromotionInfoDTOList, refundQueryQueryRefundResponseDTOResult.bankPromotionInfoDTOList) &&
    ObjectUtils.equals(this.ypPromotionInfoDTOList, refundQueryQueryRefundResponseDTOResult.ypPromotionInfoDTOList);
  }

  @Override
  public int hashCode() {
    return ObjectUtils.hashCodeMulti(code, message, parentMerchantNo, merchantNo, orderId, refundRequestId, uniqueOrderNo, uniqueRefundNo, refundAmount, returnMerchantFee, status, description, refundRequestDate, refundSuccessDate, failReason, realRefundAmount, cashRefundFee, bankPromotionInfoDTOList, ypPromotionInfoDTOList);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class RefundQueryQueryRefundResponseDTOResult {\n");

    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    message: ").append(toIndentedString(message)).append("\n");
    sb.append("    parentMerchantNo: ").append(toIndentedString(parentMerchantNo)).append("\n");
    sb.append("    merchantNo: ").append(toIndentedString(merchantNo)).append("\n");
    sb.append("    orderId: ").append(toIndentedString(orderId)).append("\n");
    sb.append("    refundRequestId: ").append(toIndentedString(refundRequestId)).append("\n");
    sb.append("    uniqueOrderNo: ").append(toIndentedString(uniqueOrderNo)).append("\n");
    sb.append("    uniqueRefundNo: ").append(toIndentedString(uniqueRefundNo)).append("\n");
    sb.append("    refundAmount: ").append(toIndentedString(refundAmount)).append("\n");
    sb.append("    returnMerchantFee: ").append(toIndentedString(returnMerchantFee)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    refundRequestDate: ").append(toIndentedString(refundRequestDate)).append("\n");
    sb.append("    refundSuccessDate: ").append(toIndentedString(refundSuccessDate)).append("\n");
    sb.append("    failReason: ").append(toIndentedString(failReason)).append("\n");
    sb.append("    realRefundAmount: ").append(toIndentedString(realRefundAmount)).append("\n");
    sb.append("    cashRefundFee: ").append(toIndentedString(cashRefundFee)).append("\n");
    sb.append("    bankPromotionInfoDTOList: ").append(toIndentedString(bankPromotionInfoDTOList)).append("\n");
    sb.append("    ypPromotionInfoDTOList: ").append(toIndentedString(ypPromotionInfoDTOList)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}

